package com.woniuxy.controller;

import com.woniuxy.entity.Message;
import com.woniuxy.entity.ResponseEntity;
import com.woniuxy.service.MessageService;
import com.woniuxy.utils.CodeUtils;
import com.woniuxy.utils.LoginRegister;
import com.woniuxy.utils.TimeUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/message")
public class MessageController {

    @Autowired
    private MessageService messageService;

    /**
     * 查看所有发给我的消息
     * @param target 接收人id
     * @return 符合条件的所有消息
     */
    @GetMapping("/myMessages/{target}")
    public ResponseEntity<List<Message>> findAllMessages(@PathVariable("target") int target){
        ResponseEntity<List<Message>> messageListResponseEntity = new ResponseEntity<>();
        List<Message> allMessages = messageService.findAllMessages(target);
        if (allMessages!=null){
            return messageListResponseEntity.setMsg("你的消息来了").setCode(CodeUtils.SUCCESS_CODE)
                    .setData(allMessages);
        }
        return messageListResponseEntity.setCode(CodeUtils.ERROR_CODE).setMsg("获取消息出了问题");
    }

    /**
     * 新增消息
     * @param message 消息实例
     * @return ResponseEntity
     */
    @PostMapping("/add")
    public ResponseEntity<Void> addMessage(@RequestBody Message message){
        if (message==null){
            return ResponseEntity.ERROR.setMsg("传来的数据有问题");
        }
        if (message.getContent()==null||message.getPurpose()==null||message.getSender()==0||message.getTarget()==0){
            return ResponseEntity.ERROR.setMsg("数据残缺");
        }
        if (messageService.addNewMessage(message)== LoginRegister.OPERATION_SUCCESS){
            return ResponseEntity.SUCCESS.setMsg("发送消息成功");
        }
        return ResponseEntity.ERROR.setMsg("出大问题");

    }


    /**
     * 修改通知消息已读未读状态
     * @param mid mid
     * @return ResponseEntity
     */
    @PutMapping("/changeStatus/{mid}")
    public ResponseEntity<Void> changeReadStatusByMid(@PathVariable("mid") int mid){
        ResponseEntity<Void> voidResponseEntity = new ResponseEntity<>();
        if (messageService.changeReadStatus(mid)==LoginRegister.OPERATION_SUCCESS){
            return voidResponseEntity.setMsg("修改已读未读成功").setCode(CodeUtils.SUCCESS_CODE);
        }
        return voidResponseEntity.setMsg("修改失败").setCode(CodeUtils.ERROR_CODE);
    }

    /**
     * 修改签约状态
     * @param message  Rmstatus ，mid
     * @return ResponseEntity
     */
    @PutMapping("/updateRm")
    public ResponseEntity<Void> updateMessageRm(@RequestBody Message message){
        if (message==null){
            return ResponseEntity.ERROR.setMsg("参数为Null");
        }
        if (message.getMid()==0||message.getRmstatus()==null||"".equals(message.getRmstatus())){
            return ResponseEntity.ERROR.setMsg("无效属性值");
        }
        if (messageService.updateRmstatus(message)==LoginRegister.OPERATION_SUCCESS){
            return ResponseEntity.SUCCESS.setMsg("修改签约状态成功");
        }
        return ResponseEntity.ERROR.setMsg("修改失败");
    }

}
